package cn.lhjl.day05.note;
/*
* 接口就是多个类的公共规范。
* 接口是一种引用数据类型，最重要的内容就是其中的：抽象方法。
*
* 如何定义一个接口的格式：
* public interface 接口名称{
*   //接口内容
* }
* 备注：换成了关键字interface之后，编译生成的字节码文件仍然是.java --> .class。
*
* 如果是java 7，那么接口中可以包含的内容有：
* 1.常量
* 2.抽象方法。
*
* 如果是java8，还可以额外包括
* 3.默认方法
* 4.静态方法
*
* 如果是java9，接口还可以额外包含：
*
* 5.私有方法
*
* 在任何版java中，接口都能定义抽象方法。
* 格式：
* public abstract 返回值类型 方法名 （参数列表）；
*
* 注意事项：
* 1.接口当中的抽象方法，修饰符必须是两个固定的关键字 public abstract
* 2.这两个关键字修饰符，可以选择性地省略。初学不推荐。
* 3.方法的三要素可以随意的定义。
*
* 接口使用步骤：
* 1.接口不能直接使用，必须有一个“实现类”来“实现”该接口。
* 格式：
* public class 实现类名称 implements 接口名称 {
*  // ..
* }
* 注意：接口的实现类最好四接口的名称加上Impl
*
* 2.接口实现类必须覆盖重写（实习）接口中的所有抽象方法。
* 实现：去掉abstract关键字，加上方括体大括号。
* 3.创建实现类的对象，进行使用。
* 注意事项：
* 如果实现类并没有覆盖重写接口中所有的抽象方法，那么这个实现类自己就必须是抽象方法。
*
* java8 支持接口里定义默认方法
* 格式：
* public default 返回值类型 方法名（参数列表）{
*   方法体
* }
* public可以省略
* 备注：接口当中的默认方法，可以解决接口升级的问题。
*
* 实现类对象调用默认方法，如果实现类中没有，会向上找接口
* 1.接口的默认方法，可以通过接口实现类对象，直接调用。
* 2.接口的默认方法，也可以被接口的实现类覆盖重写。
*
* java8 支持接口定义静态方法
* 格式：
* public static 返回值类型 方法名称（参数列表）{
*    方法体
* }
* 提示：就是将abstract或者default换成static即可，带上方法体。
* 注意事项：不能通过接口实现类的对象来调用接口中的静态方法。
* 正确用法：通过接口名称，直接调用其中的静态方法。
* 接口名称。静态方法名（参数）
*
* java9支持在接口中定义私有方法。
* 原因：
* 我们需要抽取一个共有方法，来解决两个默认方法之间的重复代买问题。
* 但是这个共有方法不能让实现类使用，应该私有化。
*
* 解决方法：
* 1.定义普通私有方法，解决多个默认方法之间重复代码问题
* 格式：
* private：返回值类型 方法名称（参数列表）{
*   方法体
* }
* 2.定义静态私有方法：解决多个静态方法之间代码重复问题
* 格式：
* private static 返回值类型 方法名（参数列表）{
*   方法体
* }
*
*
*
*
*
*
*
*
* */
public class 接口 {
}
